//  引入 express模块
const express = require('express')



const userRouter = require('./router/user')
const managerRouter = require('./router/manager')

const joi = require('@hapi/joi')
const getCode = require('./utils/getmessage')

const { jwtSecretKey } = require('./config/jwtSecretKey')//引入token自定义秘钥文件
// 解决跨域问题
const cors = require('cors')

// 解决数据读取问题
const bodyParser = require('body-parser')

// const token = require('./token/token')
// 使用 dayjs
// const dayjs = require('dayjs')
// 创建实例
const app = express()

// 使用中间件
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))
app.use(cors())

// 使用路由
app.use('/user', userRouter)
app.use('/manager',managerRouter)


// 引入token
// app.use(jwt({
//     secret: jwtSecretKey, //自定义的秘钥文件
//     algorithms: ["HS256"],//解析秘钥的算法
// }).unless({  //排除哪些路由不进行token认证
//     path: ['user/pwdLogin', 'user/codeLogin','manager/login','manager/register']
// }))

// 错误中间件——验证
app.use(function (err, req, resp, next) {
    // joi验证报错的信息反馈
    if (err instanceof joi.ValidationError) {
        return resp.send({
            status: 1,
            message: err.message
        })
    }
    // token校验失败信息
    if (err.name === 'UnauthorizedError') {
        return resp.send({
            status: 1,
            message: 'token身份验证失败'
        })
    }
    // 验证之外的报错信息反馈 
    resp.send({
        status: 1,
        message: err.message
    })
})


// 开启服务器
app.listen(9898, () => {
    console.log('服务器开启,http://127.0.0.1:9898 ')
})